์ฑ๋ฅ์ด ์ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ธ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด React ๋์์ธ Preact๋ฅผ ์์๋ณด์ธ์. Preact์ ์ฅ์ , ์ฌ์ฉ ์ฌ๋ก ๋ฐ ์์ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด์ธ์.
Preact: ํ๋ ์น ๊ฐ๋ฐ์ ์ํ ๊ฒฝ๋ React ๋์
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์, ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํด์๋ ์ฌ๋ฐ๋ฅธ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. React๊ฐ ์ง๋ฐฐ์ ์ธ ์์น๋ฅผ ์ฐจ์งํ๊ฒ ๋์์ง๋ง, ๊ทธ ํฌ๊ธฐ์ ๋ณต์ก์ฑ์ ๋๋๋ก, ํนํ ์ฑ๋ฅ์ด ๊ฐ์ฅ ์ค์ํ ํ๋ก์ ํธ์์ ๊ฑธ๋ฆผ๋์ด ๋ ์ ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ Preact๊ฐ ๋น์ ๋ฐํฉ๋๋ค. Preact๋ React์ ์ ์ฌํ API๋ฅผ ๊ฐ์ง ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ๋์์ผ๋ก, ๊ฐ์ํ๋ ๊ฐ๋ฐ ๊ฒฝํ์ ์ถ๊ตฌํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ๋งค๋ ฅ์ ์ธ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
Preact๋ ๋ฌด์์ธ๊ฐ?
Preact๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ์ DOM์ ์ ๊ณตํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. React์ ์ฆ๊ฐ์ ์ธ ๋์ฒด์ฌ๊ฐ ๋๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ฉฐ, ํจ์ฌ ์์ ํฌ๊ธฐ๋ก React์ ํต์ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. React๊ฐ ์ฝ 40KB(์ต์ํ ๋ฐ gzip ์์ถ)์ธ ๋ฐ๋ฉด, Preact๋ ๋จ 3KB์ ๋ถ๊ณผํ์ฌ ํฌ๊ธฐ์ ์ฑ๋ฅ์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ธ ์ ํ์ ๋๋ค.
Preact๋ฅผ React์ ๋ ๋ ์ฌํ๊ณ ๋น ๋ฅธ ์ฌ์ด์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ, ๊ฐ์ DOM ๋น๊ต(diffing), JSX ์ง์๊ณผ ๊ฐ์ ๋์ผํ ํต์ฌ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ๋จ์์ฑ๊ณผ ํจ์จ์ฑ์ ์ค์ ์ ๋ก๋๋ค. ์ด๋ ํนํ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ , ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA), ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์์ค ์ ์ฝ์ด ์ฐ๋ ค๋๋ ์๋ฒ ๋๋ ์์คํ ์ ๋งค๋ ฅ์ ์ ๋๋ค.
Preact ์ฌ์ฉ์ ์ฃผ์ ์ด์
- ๋ ์์ ํฌ๊ธฐ: Preact์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ์์ฃผ ์์ ํฌ๊ธฐ์ ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์์๋ก ๋ค์ด๋ก๋ ์๊ฐ์ด ๋จ์ถ๋๊ณ ์ด๊ธฐ ๋ก๋ ์ฑ๋ฅ์ด ํฅ์๋๋ฉฐ, ํนํ ๋๋ฆฐ ๋คํธ์ํฌ์ ์ฅ์น์์ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
- ๋ ๋น ๋ฅธ ์ฑ๋ฅ: Preact์ ํจ์จ์ ์ธ ๊ฐ์ DOM ๋น๊ต ์๊ณ ๋ฆฌ์ฆ๊ณผ ์์ ์ฝ๋๋ฒ ์ด์ค๋ ๋ ๋น ๋ฅธ ๋ ๋๋ง๊ณผ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ ํฅ์์ ๊ธฐ์ฌํฉ๋๋ค. ์ด๋ ๋ ๋ฐ์์ฑ์ด ์ข๊ณ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- React ํธํ์ฑ: Preact์ API๋ ๋๋ถ๋ถ React์ ํธํ๋๋ฏ๋ก ๊ธฐ์กด React ํ๋ก์ ํธ๋ฅผ Preact๋ก ์ฝ๊ฒ ์ ํํ๊ฑฐ๋ React ์ปดํฌ๋ํธ์ ํจ๊ป Preact๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํธํ์ฑ์ React์ ์ต์ํ ๊ฐ๋ฐ์๊ฐ Preact๋ฅผ ๋น ๋ฅด๊ฒ ๋ฐฐ์ฐ๊ณ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํ๊ธฐ๋ ํฉ๋๋ค. ํ์ง๋ง 100% ํธํ๋๋ ๊ฒ์ ์๋๋ฉฐ ์ผ๋ถ ์กฐ์ ์ด ํ์ํ ์ ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค.
- ES ๋ชจ๋ ์ง์: Preact๋ ES ๋ชจ๋๊ณผ ์ํํ๊ฒ ์๋ํ๋๋ก ์ค๊ณ๋์ด ๊ฐ๋ฐ์๊ฐ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ํ์ฉํ๊ณ ์ฝ๋ ๊ตฌ์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- ๋จ์ํ๋ ๊ฐ๋ฐ: Preact์ ๋ ์์ API ํ๋ฉด์ ๊ณผ ๋จ์์ฑ์ ๋ํ ์ง์ค์ ๋ฐฐ์ฐ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ ๊ท ๊ฐ๋ฐ์์ ํ์ต ๊ณก์ ์ ์ค์ด๊ณ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํฉ๋๋ค.
- ํ๋ฅญํ ์ํ๊ณ: React๋ณด๋ค๋ ์์ง๋ง, Preact์ ์ํ๊ณ๋ ์ฑ์ฅํ๊ณ ์์ผ๋ฉฐ ๋ผ์ฐํ , ์ํ ๊ด๋ฆฌ, UI ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ ๋ค์ํ ์ ์ฉํ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
Preact์ ์ฌ์ฉ ์ฌ๋ก
Preact๋ ๋ค์๊ณผ ๊ฐ์ ์๋๋ฆฌ์ค์ ํนํ ์ ํฉํฉ๋๋ค:
- ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ : Preact์ ์์ ํฌ๊ธฐ์ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ฆฌ์์ค ์ ์ฝ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ค์ํ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ํ์ํ ์ ํ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ญํญ์ด ์ ํ๋ ์ง์ญ์ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ๋ด์ค ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด๋ณด์ธ์. Preact๋ React์ ๋นํด ํจ์ฌ ๋น ๋ฅธ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ ๊ณตํ์ฌ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA): Preact์ ํจ์จ์ ์ธ ๋ ๋๋ง๊ณผ ์์ ํฌ๊ธฐ๋ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ ์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์งํ๋ ๋ฐ ์ฑ๋ฅ์ด ์ค์ํ SPA ๊ตฌ์ถ์ ์ด์์ ์ ๋๋ค. ๋น ๋ฅธ ์ํธ์์ฉ์ด ํ์์ ์ธ ๊ฐ๋จํ CRM ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก ๋ค ์ ์์ต๋๋ค.
- ์๋ฒ ๋๋ ์์คํ : Preact์ ์ต์ํ์ ํฌ๊ธฐ์ ํจ์จ์ ์ธ ์ฑ๋ฅ์ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์๋ฒ ๋๋ ์์คํ ์ ์ ํฉํฉ๋๋ค. ์์ ํ๋ฉด์ ๊ฐ์ง ์ค๋งํธ ํ ๊ธฐ๊ธฐ๋ฅผ ์์ํด๋ณด์ธ์. Preact๋ ๊ณผ๋ํ ๋ฆฌ์์ค๋ฅผ ์๋นํ์ง ์๊ณ ๋ ๋ฐ์์ฑ ์๊ณ ํจ์จ์ ์ธ UI๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
- ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(PWA): PWA๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ๊ณผ ์คํ๋ผ์ธ ๊ธฐ๋ฅ์ ์ด์ ์ ๋๋ฆฝ๋๋ค. Preact์ ์์ ํฌ๊ธฐ๋ ๋ ๋น ๋ฅธ ๋ก๋ฉ๊ณผ ํฅ์๋ ์ฑ๋ฅ์ ๊ธฐ์ฌํ์ฌ PWA ๊ฒฝํ์ ํฅ์์ํต๋๋ค. ์คํ๋ผ์ธ ์ฐ์ ์ฌํ ๊ฐ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด๋ณด์ธ์.
- ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์น์ฌ์ดํธ: ์ฑ๋ฅ๊ณผ ํ์ด์ง ์ฉ๋์ด ์ค์ํ ์น์ฌ์ดํธ์ ๊ฒฝ์ฐ, Preact๋ React์ ๋นํด ์๋นํ ์ด์ ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฐ ์ง์ญ์ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ์น์ฌ์ดํธ์ ํด๋น๋ฉ๋๋ค.
- ๋น ๋ฅธ ํ๋กํ ํ์ ์ ์: Preact๋ React๋ณด๋ค ๊ธฐ๋ฅ์ด ์ ๊ธฐ ๋๋ฌธ์ ํ๋กํ ํ์ ์ ๋ง๋ค๊ณ ์คํํ๋ ๊ฒ์ด ๋ ๊ฐ๋จํฉ๋๋ค.
Preact vs. React: ์ฃผ์ ์ฐจ์ด์
Preact๋ React์ ์ฆ๊ฐ์ ์ธ ๋์ฒด์ฌ๋ฅผ ๋ชฉํ๋ก ํ์ง๋ง, ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ด์๋ ๋ช ๊ฐ์ง ์ฃผ์ ์ฐจ์ด์ ์ด ์์ต๋๋ค:
- ํฌ๊ธฐ: ์์ ์ธ๊ธํ๋ฏ์ด Preact๋ React๋ณด๋ค ํจ์ฌ ์์ต๋๋ค (3KB vs. 40KB).
- ๊ธฐ๋ฅ: React๋ Context API, Suspense, ๋์์ฑ ๋ชจ๋์ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ๋ ๋์ ๋ฒ์์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Preact๋ React์ ํต์ฌ ๊ธฐ๋ฅ์ ์ค์ ์ ๋๊ณ ์ด๋ฌํ ๊ณ ๊ธ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ฅผ ์๋ตํฉ๋๋ค.
- ํฉ์ฑ ์ด๋ฒคํธ: React๋ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๊ฐ์ ์ด๋ฒคํธ๋ฅผ ์ ๊ทํํ๋ ํฉ์ฑ ์ด๋ฒคํธ ์์คํ ์ ์ฌ์ฉํฉ๋๋ค. Preact๋ ๋ค์ดํฐ๋ธ ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด๋ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ง๋ง ๋ธ๋ผ์ฐ์ ๊ฐ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ๋ ์ ์คํ๊ฒ ์ฒ๋ฆฌํด์ผ ํ ์ ์์ต๋๋ค.
- createElement: React๋ ๊ฐ์ DOM ๋ ธ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด `React.createElement`๋ฅผ ์ฌ์ฉํฉ๋๋ค. Preact๋ JSX๊ฐ ์ง์ ํจ์ ํธ์ถ๋ก ๋ณํ๋๋ ๊ฒ์ ์์กดํฉ๋๋ค.
- PropType ์ ํจ์ฑ ๊ฒ์ฌ: React์๋ ์ปดํฌ๋ํธ ๊ฐ์ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ๊ธฐ ์ํ `PropTypes`๊ฐ ์์ต๋๋ค. Preact์๋ ๋ด์ฅ๋ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค.
Preact ์์ํ๊ธฐ
Preact๋ฅผ ์์ํ๋ ๊ฒ์ ๊ฐ๋จํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ๋๊ตฌ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค:
create-preact-app ์ฌ์ฉํ๊ธฐ
์๋ก์ด Preact ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ create-preact-app์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฐ๋ฐ ์๋ฒ์ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ถ ๊ธฐ๋ณธ Preact ํ๋ก์ ํธ๋ฅผ ์ค์ ํด์ฃผ๋ ์ปค๋งจ๋ ๋ผ์ธ ๋๊ตฌ์ ๋๋ค.
npx create-preact-app my-preact-app
์ด ๋ช ๋ น์ด๋ `my-preact-app`์ด๋ผ๋ ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๊ธฐ๋ณธ Preact ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ง๋ญ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํด๋น ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์์ํ ์ ์์ต๋๋ค:
cd my-preact-app
npm start
์๋ ์ค์
Preact ํ๋ก์ ํธ๋ฅผ ์๋์ผ๋ก ์ค์ ํ ์๋ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๊ธฐ๋ณธ HTML ํ์ผ์ ๋ง๋ค๊ณ , Preact ๋ฐ ํ์ํ ์ข ์์ฑ์ ์ค์นํ๊ณ , Webpack์ด๋ Parcel๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค.
๋จผ์ , `index.html` ํ์ผ์ ๋ง๋ญ๋๋ค:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>My Preact App</title>
</head>
<body>
<div id="app"></div>
<script src="bundle.js"></script>
</body>
</html>
๊ทธ๋ฐ ๋ค์ Preact์ htm์ ์ค์นํฉ๋๋ค:
npm install preact htm
`index.js` ํ์ผ์ ๋ง๋ค๊ณ ๋ค์ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค:
import { h, render } from 'preact';
import htm from 'htm';
const html = htm.bind(h);
function App() {
return html`<div>Hello, Preact!</div>`;
}
render(html`<${App} />`, document.getElementById('app'));
๋ง์ง๋ง์ผ๋ก, Webpack์ด๋ Parcel์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ฒ๋ค๋งํ๋ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
์์ : Preact์ ๊ฐ๋จํ ์นด์ดํฐ ์ปดํฌ๋ํธ
๋ค์์ Preact๋ก ๋ง๋ ๊ฐ๋จํ ์นด์ดํฐ ์ปดํฌ๋ํธ์ ์์ ์ ๋๋ค:
import { h, useState } from 'preact';
function Counter() {
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
return (
<div>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</div>
);
}
export default Counter;
์ด ์ปดํฌ๋ํธ๋ `useState` ํ ์ ์ฌ์ฉํ์ฌ ์นด์ดํฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. `increment` ํจ์๋ ๋ฒํผ์ ํด๋ฆญํ ๋ ์ํ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ React ์ฝ๋์์ ์ ์ฌ์ฑ์ ๋ณด์ฌ์ค๋๋ค.
Preact์ ์ํ๊ณ์ ์ปค๋ฎค๋ํฐ
Preact์ ์ํ๊ณ๋ React๋ณด๋ค ์์ง๋ง, ์ฌ์ ํ ๋ค์ํ ์ ์ฉํ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฃผ๋ชฉํ ๋งํ ๋ช ๊ฐ์ง ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- preact-router: Preact ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ฐ๋จํ๊ณ ๊ฐ๋ฒผ์ด ๋ผ์ฐํฐ์ ๋๋ค.
- preact-compat: Preact ์ ํ๋ฆฌ์ผ์ด์ ์์ React ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ํธํ์ฑ ๋ ์ด์ด์ ๋๋ค.
- preact-render-to-string: Preact ์ปดํฌ๋ํธ๋ฅผ ๋ฌธ์์ด๋ก ๋ ๋๋งํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์ ์ฉํฉ๋๋ค.
- preact-helmet: title ๋ฐ meta ํ๊ทธ์ ๊ฐ์ ๋ฌธ์ ํค๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
Preact ์ปค๋ฎค๋ํฐ๋ ํ๋ฐํ๊ณ ์ง์์ ์ ๋๋ค. Preact GitHub ์ ์ฅ์, Preact Slack ์ฑ๋, ๊ทธ๋ฆฌ๊ณ ๋ค์ํ ์จ๋ผ์ธ ํฌ๋ผ๊ณผ ์ปค๋ฎค๋ํฐ์์ ๋์๊ณผ ์๋ฃ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
Preact ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
Preact๋ฅผ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ํฌ๊ธฐ ์ต์ ํ: ์ข ์์ฑ์ ์ต์ํํ๊ณ ์ฝ๋๋ฅผ ํฌ๊ธฐ์ ๋ง๊ฒ ์ต์ ํํ์ฌ Preact์ ์์ ํฌ๊ธฐ๋ฅผ ํ์ฉํ์ญ์์ค. Webpack์ ํธ๋ฆฌ ์์ดํน๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ญ์์ค.
- ES ๋ชจ๋ ์ฌ์ฉ: ์ฝ๋ ๊ตฌ์ฑ์ ๊ฐ์ ํ๊ณ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ ํ์ฉํ๊ธฐ ์ํด ES ๋ชจ๋์ ์ฌ์ฉํ์ญ์์ค.
- ์ฑ๋ฅ ํ๋กํ์ผ๋ง: ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๊ณ ์ต์ ํํ ์์ญ์ ์๋ณํ์ญ์์ค.
- `preact-compat` ์ ์คํ๊ฒ ์ฌ์ฉํ๊ธฐ: `preact-compat`์ React ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ์ง๋ง, ์ฑ๋ฅ ํฅ์์ ์ํด Preact์์ ๋ค์ดํฐ๋ธํ๊ฒ ๋ค์ ์์ฑํ๋ ๊ฒ์ ์๋ํ์ญ์์ค. ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ์ญ์์ค.
- ์ง์ฐ ๋ก๋ฉ: ์ปดํฌ๋ํธ์ ๋ฆฌ์์ค์ ์ง์ฐ ๋ก๋ฉ์ ๊ตฌํํ์ฌ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ๊ณ ์ ์ฒด ํ์ด์ง ์ฉ๋์ ์ค์ด์ญ์์ค.
- ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR): SEO์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ๊ธฐ ์ํด ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ํ์ํ์ญ์์ค. `preact-render-to-string`๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
Preact๋ ๋น ๋ฅด๊ณ , ๊ฐ๋ณ๊ณ , ํจ์จ์ ์ธ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ๋ ๊ฐ๋ฐ์๋ค์๊ฒ React์ ๋งค๋ ฅ์ ์ธ ๋์์ ์ ๊ณตํฉ๋๋ค. ์์ ํฌ๊ธฐ, React ํธํ์ฑ, ๊ทธ๋ฆฌ๊ณ ๋จ์ํ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ , SPA, ์๋ฒ ๋๋ ์์คํ ๋ฐ ์ฑ๋ฅ์ด ์ค์ํ ์น์ฌ์ดํธ์ ํ์ํ ์ ํ์ด ๋๊ฒ ํฉ๋๋ค.
React๊ฐ ์ฌ์ ํ ๊ฐ๋ ฅํ๊ณ ๊ธฐ๋ฅ์ด ํ๋ถํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋จ์์์ง๋ง, Preact๋ ์ฑ๋ฅ๊ณผ ๋จ์์ฑ์ ์ฐ์ ์ํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ๊ฐ์น ์๋ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ๊ณผ ์ฝ์ ์ ์ดํดํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ํน์ ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ๋๊ตฌ์ ๋ํด ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค.
๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฐ๋จํ ๋ชจ๋ฐ์ผ ์ฑ์ ๊ตฌ์ถํ๋ , Preact๋ React์ ๊ฐ๋ ฅํ๊ณ ๊ฐ๋ฒผ์ด ๋์์ผ๋ก ๊ณ ๋ คํ ๊ฐ์น๊ฐ ์์ต๋๋ค.